perm filename OBVI.RLS[206,JMC]1 blob sn#057947 filedate 1973-08-14 generic text, type T, neo UTF8
00100	COUNT(X,Y) ← IF NULL Y THEN 0
00200		ELSE IF CAR Y = X THEN 1 + COUNT(X,CDR Y)
00300		ELSE COUNT(X,CDR Y);
00400	
00500	ELIMALL(X,Y) ← IF NULL Y THEN NIL
00600		ELSE IF MEMBER(CAR Y,X) THEN ELIMALL(X,CDR Y)
00700		ELSE CAR Y . ELIMALL(X,CDR Y);
00800	
00900	ELIMDUP X ← IF NULL X THEN NIL ELSE CAR X . ELIMDUP ELIMALL(LIST CAR X,CDR X);
01000	
01100	ZORCH N ← IF NULL SP N THEN NIL ELSE LIST CAR SP N;
01120	
01140	ZILCH N ← REMAINDER(CAR FP N + N - 1,13) + 1;
01200	
01300	SYMBOLIC PROCEDURE OBVIOUS();
01400	BEGIN SCALAR AVAIL,NAVAIL,FTOP,BURIED,NHAND,MOVES,X;
01500	MOVES ← FMOVES();
01600	IF NULL MOVES THEN RETURN "NO MOVES";
01700	IF NULL CDR MOVES THEN RETURN CAR MOVES;
01800	AVAIL ← APPEND(IF NULL HAND THEN NIL ELSE LIST CAR HAND,
01900		ZORCH 1,ZORCH 2,ZORCH 3,ZORCH 4);
02000	NAVAIL ← ELIMDUP AVAIL;
02100	FTOP ← ELIMALL(LIST 0,LIST(ZILCH 1,ZILCH 2,ZILCH 3,ZILCH 4));
02200	NHAND ← IF NULL HAND THEN NIL ELSE CDR HAND;
02300	BURIED ←APPEND(IF NULL SP 1 THEN NIL ELSE CDR SP 1,
02400		IF NULL SP 2 THEN NIL ELSE CDR SP 2,
02500		IF NULL SP 3 THEN NIL ELSE CDR SP 3,
02600		IF NULL SP 4 THEN NIL ELSE CDR SP 4);
02700	PRINT "FOO1";
02800	LOOP:
02900	IF NULL NAVAIL THEN RETURN NIL;
03000	X ← CAR NAVAIL; NAVAIL ← CDR NAVAIL;
03100	IF COUNT(X,AVAIL) ≠ COUNT(X,FTOP) ∨ COUNT(X,BURIED)≠0 ∨ COUNT(X,NHAND)≠0
03200			THEN GO TO LOOP;
03300	PRINT "FOO2";
03400	J←1;L:IF J>4 THEN GO TO L1; IF
03450		REMAINDER(CAR FP J + J - X,13) = 0 THEN GO TO W1;J←J+1;GO TO L;L1:
03500	PRINT LIST("X=",X,",SP=",SP 1,SP 2,SP 3,SP 4,"NAVAIL=",NAVAIL);
03600	RETURN "INCONSISTENCY 1 IN OBVIOUS";
03700	W1:
03800	PRINT "FOO4";
03900	IF NOT NULL HAND ∧ CAR HAND = X THEN RETURN LIST('HF,J);
04000	PRINT "FOO3";
04150	I←1;LL:IF I>4 THEN GO TO LL1;IF CAR SP I = X THEN RETURN LIST('SF,I,J);
04175		I←I+1;GO TO LL;LL1:
04200	RETURN "INCONSISTENCY 2 IN OBVIOUS";
04300	END;
04400	
04500	END;